#import "Core.h"

@implementation ImageButton

- (id)initWithFrame:(CGRect)frame 
andShowThisImageForNormalState:(UIImage*)normalImage 
thenShowThisWhenHighlighted:(UIImage*)hilightImage 
			   let:(id)target 
	 handleEventAt:(SEL)action
{
	if( nil == (self = [super initWithFrame:frame]))
	{
		return nil;
	}
	
	self.exclusiveTouch = YES;
	
	[self addTarget:target action:action forControlEvents:UIControlEventTouchDown];//UpInside];
	[self setImage:normalImage forState:UIControlStateNormal];
	[self setImage:hilightImage forState:UIControlStateHighlighted];
	
	return self;
}

- (void)setNormalImage:(UIImage*)image
{
	[self setImage:image forState:UIControlStateNormal];
}

- (void)setHighlightedImage:(UIImage*)image
{
	[self setImage:image forState:UIControlStateHighlighted];
}

@end

@interface RosaryViewController (private)

- (void)reEnableUserInteraction;
- (void)onRosaryEnd;

@end

@implementation RosaryViewController (private)

- (void)reEnableUserInteraction
{
	[self setUserInteractionEnabled:YES];
	
	_startPoint = self.contentOffset;
	_lastOffset = _startPoint;
}

- (void)onRosaryEnd
{
	UIActionSheet*	sheet = [[[UIActionSheet alloc] initWithTitle:@"다음 기도로 넘어가시겠습니까?" 
													   delegate:self 
											  cancelButtonTitle:@"아니오" 
										 destructiveButtonTitle:nil 
											  otherButtonTitles:nil] autorelease];
	[sheet addButtonWithTitle:@"네"];
	[sheet showInView:self];
}

@end

@implementation RosaryViewController

@synthesize rosaryDelegate = _rosaryDelegate;

#if 0
static short theRosary[] = {3,1,0,0,0,0,0,0,0,0,0,0, 1,5,2, 0,0,0,0,0,0,0,0,0,0, 1,5,2, 0,0,0,0,0,0,0,0,0,0, 1,5,2, 0,0,0,0,0,0,0,0,0,0, 1,5,2, 0,0,0,0,0,0,0,0,0,0, 1,5,6, 0,0,0, 1,5,1, 4, -1};
#else
static short theRosary[] = {-1,3,1,0,0,0,0,0,0,0,0,0,0, 1,5,2, 0,0,0,0,0,0,0,0,0,0, 1,5,2, 0,0,0,0,0,0,0,0,0,0, 1,5,2, 0,0,0,0,0,0,0,0,0,0, 1,5,2, 0,0,0,0,0,0,0,0,0,0, 1,5,6, 0,0,0, 1,5,1, 4, -1};
#endif

- (id)init
{
	if( (self = [super initWithFrame:CGRectZero style:UITableViewStylePlain]) != nil )
	{
		_numberOfTouch = 0;
		_lastOffset = CGPointZero;
		_curRosaryPosition = ROSARYVIEW_INDEX_DEFAULTPOSITION;
		self.bounces = NO;
		self.decelerationRate = UIScrollViewDecelerationRateFast;
		self.delegate = self;
		self.dataSource = self;
		self.backgroundColor = [UIColor clearColor];
		self.separatorStyle = UITableViewCellSeparatorStyleNone;
		
		UIView*		footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height - 65.0f/* half of height of cross*/)];
		footerView.backgroundColor = [UIColor clearColor];
		self.tableFooterView = footerView;
		[footerView release];
		
		_imgBall 	= [[UIImage imageNamed:@"rosary1_ball.png"] retain];
		_imgChain 	= [[UIImage imageNamed:@"rosary1_chain.png"] retain];
		_imgCross 	= [[UIImage imageNamed:@"rosary1_cross.png"] retain];
		_imgMedal 	= [[UIImage imageNamed:@"rosary1_medal.png"] retain];
		
		_blockScroll = NO;
	}
	
	return self;
}

- (void)resetPosition
{
	_curRosaryPosition = ROSARYVIEW_INDEX_DEFAULTPOSITION;
	[self setUserInteractionEnabled:NO];
	[self scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:ROSARYVIEW_INDEX_DEFAULTPOSITION inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
	[self reEnableUserInteraction];
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
	[self reEnableUserInteraction];
#ifdef _DEBUG
	NSLog(@"Moving ENd");
#endif
	if( _rosaryDelegate != nil )
		[_rosaryDelegate positionChanged:_curRosaryPosition withValue:theRosary[_curRosaryPosition]];
	
	_blockScroll = YES;
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
	_blockScroll = NO;
}

- (void)checkRosaryAction:(UIScrollView*)scrollView
{
	CGRect newRect;
	NSIndexPath *newIndexPath;
	
	// 현재 셀의 반을 넘어갔을 경우
	if( self.userInteractionEnabled && _lastOffset.y < _startPoint.y - [self tableView:self heightForRowAtIndexPath:[NSIndexPath indexPathForRow:_curRosaryPosition inSection:0]] / 2 )
	{
		_curRosaryPosition--;
		
		if( theRosary[_curRosaryPosition] == 1 )
			_curRosaryPosition--;
		
		newIndexPath = [NSIndexPath indexPathForRow:_curRosaryPosition inSection:0];
		newRect = [self rectForRowAtIndexPath:newIndexPath];
		
		if( _curRosaryPosition >= 1 )
		{
			newRect.origin.y = newRect.origin.y - (self.frame.size.height - [self tableView:self heightForRowAtIndexPath:newIndexPath]) / 2;
		}	
		
#ifdef _DEBUG
		NSLog(@"Moving");
#endif
		[self setUserInteractionEnabled:NO];
		[self setContentOffset:newRect.origin animated:YES];
	}
	else if( self.userInteractionEnabled &&  _lastOffset.y > _startPoint.y + [self tableView:self heightForRowAtIndexPath:[NSIndexPath indexPathForRow:_curRosaryPosition inSection:0]] / 2)
	{
		_curRosaryPosition++;
		
		if( theRosary[_curRosaryPosition] == 1 )
			_curRosaryPosition++;
		
		newIndexPath = [NSIndexPath indexPathForRow:_curRosaryPosition inSection:0];
		newRect = [self rectForRowAtIndexPath:newIndexPath];
		
		if( _curRosaryPosition > 1 )
		{
			newRect.origin.y = newRect.origin.y - (self.frame.size.height - [self tableView:self heightForRowAtIndexPath:newIndexPath]) / 2;
		}	
		
		[self setUserInteractionEnabled:NO];
		[self setContentOffset:newRect.origin animated:YES];
	}
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
	int maxDelta = 2;

	if( _blockScroll )
	{
		scrollView.contentOffset = _lastOffset;
		return;
	}
	
	// hide Pointer
	if( _rosaryDelegate != nil )
		[_rosaryDelegate rosaryMoving];
	
	// _lastOffset 초기화 
	if( _lastOffset.x == CGPointZero.x && _lastOffset.y == CGPointZero.y )
	{
		_lastOffset = scrollView.contentOffset;
		return;
	}

	if( !self.userInteractionEnabled )
	{
		return;
	}

	if( _curRosaryPosition == 1 && _lastOffset.y > scrollView.contentOffset.y )
	{
		scrollView.contentOffset = _lastOffset;
		[self onRosaryEnd];
		return;
	}

	// 스크롤 딜레이
	if( _lastOffset.y - scrollView.contentOffset.y > maxDelta )
	{
		_lastOffset.y = _lastOffset.y - maxDelta;
		scrollView.contentOffset = _lastOffset;
	} 
	else if (_lastOffset.y - scrollView.contentOffset.y < -maxDelta )
	{
		_lastOffset.y = _lastOffset.y + maxDelta;
		scrollView.contentOffset = _lastOffset;
	}
	
	[self checkRosaryAction:scrollView];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
	return ROSARYVIEW_TOTAL_NUMBER_OF_ROWS;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
	UITableViewCell*	cell;
	UIImageView*		imgView;
		
	switch (theRosary[indexPath.row]) {
		case ROSARYVIEW_INDEX_BIGBALL:
		case ROSARYVIEW_INDEX_BALL:
			cell = [tableView dequeueReusableCellWithIdentifier:TABLEVIEW_IDENTIFIER_BALL];

			if( cell == nil )
			{
				cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TABLEVIEW_IDENTIFIER_BALL] autorelease];

				imgView = [[UIImageView alloc] initWithImage:_imgBall];
				imgView.tag = 99;
				
				[cell addSubview:imgView];
				[imgView release];
			}
			else 
			{
				imgView = (UIImageView*)[cell viewWithTag:99];
				imgView.image = _imgBall;
			}

			break;
		case ROSARYVIEW_INDEX_CHAIN:
		case ROSARYVIEW_INDEX_CHAINTOBIGBALL:
		case ROSARYVIEW_INDEX_CHAINTOSTART:
			cell = [tableView dequeueReusableCellWithIdentifier:TABLEVIEW_IDENTIFIER_CHAIN];
			
			if( cell == nil )
			{
				cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TABLEVIEW_IDENTIFIER_CHAIN] autorelease];
				imgView = [[UIImageView alloc] initWithImage:_imgChain];
				imgView.tag = 99;
				
				[cell addSubview:imgView];
				[imgView release];
			}
			else 
			{
				imgView = (UIImageView*)[cell viewWithTag:99];
				imgView.image = _imgChain;
			}
			break;
		case ROSARYVIEW_INDEX_CROSS:
			cell = [tableView dequeueReusableCellWithIdentifier:TABLEVIEW_IDENTIFIER_CROSS];
			
			if( cell == nil )
			{
				cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TABLEVIEW_IDENTIFIER_CROSS] autorelease];
				imgView = [[UIImageView alloc] initWithImage:_imgCross];
				imgView.tag = 99;
				
				[cell addSubview:imgView];
				[imgView release];
			}
			else 
			{
				imgView = (UIImageView*)[cell viewWithTag:99];
				imgView.image = _imgCross;
			}
			break;
		case ROSARYVIEW_INDEX_MEDAL:
			cell = [tableView dequeueReusableCellWithIdentifier:TABLEVIEW_IDENTIFIER_MEDAL];
			
			if( cell == nil )
			{
				cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TABLEVIEW_IDENTIFIER_MEDAL] autorelease];
				imgView = [[UIImageView alloc] initWithImage:_imgMedal];
				imgView.tag = 99;
				
				[cell addSubview:imgView];
				[imgView release];
			}
			else 
			{
				imgView = (UIImageView*)[cell viewWithTag:99];
				imgView.image = _imgMedal;
			}
			break;	
		case -1:
			cell = [tableView dequeueReusableCellWithIdentifier:TABLEVIEW_IDENTIFIER_BLANK];
			
			if( cell == nil )
			{
				cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:TABLEVIEW_IDENTIFIER_BLANK] autorelease];
			}
			break;
	}

	cell.selectionStyle = UITableViewCellSelectionStyleNone;
	
	return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
	switch (theRosary[indexPath.row]) {
		case ROSARYVIEW_INDEX_BALL:
		case ROSARYVIEW_INDEX_BIGBALL:
			return ROSARYVIEW_ROWHEIGHT_BALL;
		case ROSARYVIEW_INDEX_CHAIN:
		case ROSARYVIEW_INDEX_CHAINTOBIGBALL:
		case ROSARYVIEW_INDEX_CHAINTOSTART:
			return ROSARYVIEW_ROWHEIGHT_CHAIN;
		case ROSARYVIEW_INDEX_CROSS:
			return ROSARYVIEW_ROWHEIGHT_CROSS;
		case ROSARYVIEW_INDEX_MEDAL:
			return ROSARYVIEW_ROWHEIGHT_MEDAL;
		case -1 :
			return tableView.frame.size.height - 65.0f;
	}
	
	return 0;
}

- (void)onSideChange:(BOOL)isLeftHand
{	
}

- (void)changeRosary:(NSInteger)rosaryNum
{
	[_imgBall release];
	[_imgChain release];
	[_imgCross release];
	[_imgMedal release];
	
	_imgBall = [[UIImage imageNamed:[NSString stringWithFormat:@"rosary%d_ball.png", (int)rosaryNum]] retain];
	_imgChain = [[UIImage imageNamed:[NSString stringWithFormat:@"rosary%d_chain.png", (int)rosaryNum]] retain];
	_imgCross = [[UIImage imageNamed:[NSString stringWithFormat:@"rosary%d_cross.png", (int)rosaryNum]] retain];
	_imgMedal = [[UIImage imageNamed:[NSString stringWithFormat:@"rosary%d_medal.png", (int)rosaryNum]] retain];
	
	[self reloadData];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
	// if YES
	if( buttonIndex == 1 )
	{
		if( _rosaryDelegate != nil )
			[_rosaryDelegate rosaryEnd];
		[self resetPosition];
	}
}

- (NSInteger)currentPosition
{
	return _curRosaryPosition;
}

- (NSInteger)currentRosaryValue
{
	return theRosary[_curRosaryPosition];
}

@end

@implementation LanguageInformation

+ (NSString*)getLanguageCodeFromLanguageName:(NSString *)language
{
	if( [language isEqualToString:@"Español"] )
		return @"es";
	else if( [language isEqualToString:@"한국어"] )
		return @"ko";
	else
		return @"en";
}

+ (NSString*)getLanguageNameFromLanguageCode:(NSString *)code
{
	if( [code isEqualToString:@"es"] )
		return @"Español";
	else if( [code isEqualToString:@"ko"] )
		return @"한국어";
	else
		return @"English";
}

@end

@interface MysteryView (private)

- (void)onNext;

@end

@implementation MysteryView (private)

- (void)onNext
{
	[self removeFromSuperview];
}

@end

@implementation MysteryView

+ (MysteryView*)getMysteryViewForMystery:(NSInteger)mystery withIndex:(NSInteger)index rootViewController:(PrayViewController*)rootViewController;
{
	MysteryView*	view = [[MysteryView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
	UIImageView* 	mysteryName;
	UIImageView* 	mysteryIndex;
	UIImageView* 	mysteryImage;
	UILabel*	 	mysteryLabel;
	CustomTextView* mysteryText;
	ImageButton* 	mysteryNext;
	CGRect 		 	frame;
	NSString*		mysteryText1;
	NSString*		mysteryText2;
	UIImageView*	test;
	
	
	view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"mystery_background.png"]];
	
	mysteryNext = [[ImageButton alloc] initWithFrame:CGRectMake(112, 435, 92, 26) 
					  andShowThisImageForNormalState:[UIImage imageNamed:@"mystery_next.png"] 
						 thenShowThisWhenHighlighted:[UIImage imageNamed:@"mystery_next.png"] 
												 let:view 
									   handleEventAt:@selector(onNext)];
	
	mysteryLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 68, 300, 20)];
	mysteryText  = [[CustomTextView alloc] initWithFrame:CGRectMake(35, 230, 250, 195)];
	
	test = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"fadein.png"]];
	
	if( mystery == 1 ) // 환희의 신비
	{
		mysteryName = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mystery_h.png"]];
		mysteryImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"h%d.png", (int)index]]];
	}
	else if( mystery == 2 ) // 빛의 신비
	{
		mysteryName = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mystery_b.png"]];
		mysteryImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"b%d.png", (int)index]]];
	}
	else if( mystery == 3 ) // 고통의 신비
	{
		mysteryName = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mystery_g.png"]];
		mysteryImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"g%d.png", (int)index]]];
	}
	else // 영광의 신비
	{
		mysteryName = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mystery_y.png"]];
		mysteryImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"y%d.png", (int)index]]];
	}
	
	mysteryIndex = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"circle%d.png", (int)index]]];
	
	frame = mysteryName.frame;
	frame.origin.x = 65;
	frame.origin.y = 22;
	mysteryName.frame = frame;
	
	frame = mysteryImage.frame;
	frame.origin.x = 55;
	frame.origin.y = 95;
	mysteryImage.frame = frame;
	
	frame = mysteryIndex.frame;
	frame.origin.x = 220;
	frame.origin.y = 22;
	mysteryIndex.frame = frame;
	
	frame = test.frame;
	frame.origin.x = 35;
	frame.origin.y = 230;
	test.frame = frame;
	
	mysteryText1 = [rootViewController getLocalizedStringForKey:[MysteryString getMysteryText1ForMystery:mystery withIndex:index]];
	mysteryText2 = [rootViewController getLocalizedStringForKey:[MysteryString getMysteryText2ForMystery:mystery withIndex:index]];
	
	mysteryText.editable = NO;
	mysteryText.font = [UIFont fontWithName:@"NanumGothic" size:PRAY_DEFAULT_FONT_SIZE];
	mysteryText.textAlignment = UITextAlignmentCenter;
	mysteryText.backgroundColor = [UIColor clearColor];
	mysteryText.text = [NSString stringWithFormat:@"%@\n\n%@", mysteryText1, mysteryText2];
	
	mysteryLabel.font = [UIFont fontWithName:@"NanumMyeongjo" size:PRAY_DEFAULT_FONT_SIZE];
	mysteryLabel.textAlignment = UITextAlignmentCenter;
	mysteryLabel.backgroundColor = [UIColor clearColor];
	mysteryLabel.text = [rootViewController getLocalizedStringForKey:[MysteryString getMysteryTitleForMystery:mystery withIndex:index]];
	
	[view addSubview:mysteryLabel];
	[view addSubview:mysteryNext];
	[view addSubview:mysteryName];
	[view addSubview:mysteryImage];
	[view addSubview:mysteryIndex];
	[view addSubview:mysteryText];
	[view addSubview:test];
	
	return view;
}

@end

@implementation MysteryString

static NSString*		mysteryTitle[4][5] = { 
	@"마리아께서 예수님을 잉태하심을 묵상합시다.",
	@"마리아께서 엘리사벳을 찾아보심을 묵상합시다.",
	@"마리아께서 예수님을 낳으심을 묵상합시다.",
	@"마리아께서 예수님을 성전에 바치심을 묵상합시다.",
	@"마리아께서 잃으셨던 예수님을 성전에서 찾으심을 묵상합시다.",
	@"예수님께서 세례받으심을 묵상합시다.",
	@"예수님께서 가나에서 첫 기적을 행하심을 묵상합시다.",
	@"예수님께서 하느님 나라를 선포하심을 묵상합시다.",
	@"예수님께서 거룩하게 변모하심을 묵상합시다.",
	@"예수님께서 성체성사를 세우심을 묵상합시다.",
	@"예수님께서 우리를 위하여 피땀 흘리심을 묵상합시다.",
	@"예수님께서 우리를 위하여 매 맞으심을 묵상합시다.",
	@"예수님께서 우리를 위하여 가시관 쓰심을 묵상합시다.",
	@"예수님께서 우리를 위하여 십자가 지심을 묵상합시다.",
	@"예수님께서 우리를 위하여 십자가에 못 박혀 돌아가심을 묵상합시다.",
	@"예수님께서 부활하심을 묵상합시다.",
	@"예수님께서 승천하심을 묵상합시다.",
	@"예수님께서 성령을 보내심을 묵상합시다.",
	@"예수님께서 마리아를 하늘에 불러 올리심을 묵상합시다.",
	@"예수님께서 마리아께 천상 모후의 관을 씌우심을 묵상합시다."};

static NSString*		mysteryText1[4][5] = { 
	@"어지신 어머니 마리아님, 예수님을 잉태하신 기쁨의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 가브리엘 천사가 당신께서 하느님의 어머니가 되시리라는 소식을 가지고 나타나 \"은총이 가득한 이여, 기뻐하여라. 주님께서 너와 함께 계신다.\"라고 장엄한 인사를 드렸을 때, 어머니께서는 \"보십시오, 저는 주님의 종입니다. 말씀하신대로 저에게 이루어지기를 바랍니다.\"라고 응답하시어 하느님 아버지의 뜻에 겸손하게 따르셨습니다.",
	@"어지신 어머니 마리아님, 어머니께서 엘리사벳을 방문하신 기쁨의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 어머니의 사촌 엘리사벳이 \"당신은 여인들 가운데에서 가장 복되시며 당신 태중의 아기도 복되십니다.\"라고 찬미의 인사를 드릴 때, 어머니께서는 마니피캇을 읊어 답례하셨습니다.",
	@"어지신 어머니 마리아님, 예수님께서 탄생하신 기쁨의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 거룩하신 동정 마리아님, 당신은 베들레헴 마구간에서 구세주를 낳으셨습니다. 그때 \"지극히 높은 곳에서는 하느님께 영광 땅에서는 그분 마음에 드는 사람들에게 평화!\"하고 천사들의 기꺼운 찬미의 노래는 하늘을 메우고 땅 끝까지 울려 퍼졌습니다.",
	@"어지신 어머니 마리아님, 예수님을 성전에 바치신 기쁨의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 모세의 율법에 따라 예수님을 성전에 봉헌하러 갔을때, 예언자 시므온은 아기 예수님을 받아 안고 구세주를 생전에 보게 해 주신 하느님께 감사하며, \"당신의 영혼이 칼에 꿰찔리는 가운데, 많은 사람의 마음속 생각이 드러날 것입니다.\"라고 어머니께 다가올 고통을 예언하셨습니다.",
	@"어지신 어머니 마리아님, 예수님을 성전에서 찾으신 기쁨의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 어린 예수님을 잃으신 어머니께서는 슬픔에 잠겨 사흘이나 찾아 헤매시다가 마침내 성전에서 율법 교사들과 토론하고 계신 예수님을 찾으시고 기쁨에 넘치셨습니다. 그리고 어머니께서 원하시자 예수님께서는 순명하여 집으로 돌아오셨습니다.",
	@"자애로우신 어머니 마리아님, 예수님께서 요르단강에서 세례를 받으신 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 예수님께서는 죄를 모르는 분잉시지만 요르단강에서 세례를 주던 요한을 찾아가 우리를 위하여 죄 있는 사람처럼 물속에 잠겨 세례를 받으셨습니다. 그러자 홀연히 하늘이 열리고 \"이는 내가 사랑하는 아들, 내 마음에 드는 아들이다.\"라는 하느님 아버지의 음성이 들려왔고, 성령께서 비둘기 모양으로 내려와 예수님께서 수행해야 할 하느님 나라의 선포 사명을 계시하셨습니다.",
	@"자애로우신 어머니 마리아님, 예수님께서 카나의 혼인 잔치에서 어머니의 중개로 당신을 처음 드러내신 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 예수님께서는 혼인 잔치에 포도주가 떨어졌다고 알리신 어머니의 말씀에 \"아직 저의 때가 오지 않았습니다.\"라고 하셨으나, 어머니께서 \"무엇이든지 그가 시키는 대로 하여라.\"라고 이르신 대로 하인들이 행하자, 곧 물을 포도주로 변화시키시어 혼인 잔치를 풍요롭게 하셨습니다. 이렇게 예수님께서는 카나에서 첫 기적을 행하시어 당신의 영광을 드러내셨습니다.",
	@"자애로우신 어머니 마리아님, 예수님께서 하느님의 나라를 선포하신 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 예수님께서는 갈릴래아에서 하느님 나라의 기쁜 소식을 선포하시며 \"때가 차서 하느님의 나라가 가까이 왔다. 회개하고 복음을 믿어라.\"라고 말씀하셨습니다. 그리고 겸손한 신뢰와 회개로 당신께 가까이 다가오는 모든 사람의 죄를 용서하시고 마귀를 쫓아내시며 그들의 병고를 치유해 주셨습니다.",
	@"자애로우신 어머니 마리아님, 예수님께서 거룩하게 변모하신 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 예수님께서는 베드로와 요한과 야고보만을 데리고 산으로 올라가 기도하시는 중에 얼굴 모습이 변하고 옷은 새하얗게 빛났습니다. 그리고 모세와 엘리야가 나타나 예수님께서 영광을 받으시기 전에 겪을 수난과 죽음에 대해 함께 이야기를 나누었습니다. 이때 구름 속에서 \"이는 내가 선택한 아들이니 너희는 그의 말을 들어라.\"라는 소리가 들려와, 영광에 앞서 예수님과 함께 수난을 겪게 될 제자들을 준비시켰습니다.",
	@"자애로우신 어머니 마리아님, 주님께서 성체성사를 세우신 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 예수님께서는 최후의 만찬상에서 빵을 들어 축복하시고 \"받아 먹어라. 이는 내 몸이다.\"라며 제자들에게 나누어 주시고, 잔을 들어 감사를 드리신 다음 \"모두 이 잔을 마셔라. 이는 죄를 용서해 주려고 많은 사람을 위하여 흘리는 내 계약의 피다.\"라며 제자들에게 잔을 건네셨습니다. 주님께서는 인류 구원을 위해 당신을 성부께 봉헌하셨고, 이 지극한 사랑을 성체성사로 증명하셨습니다.",
	@"지극히 고통스러우신 어머니 마리아님, 저희를 위하여 겟세마니 동산에서 피땀 흘리신 주님 사랑의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 예수님께서는 당신이 당하실 고통과 죽음, 어머니께서 당하실 고통과 교회가 당할 고통 그리고 성체 안에서 당신이 당하실 고통을 미리 보시고는 피땀을 흘리시며 고뇌에 찬 목소리로 \"아버지! 아버지께서는 무엇이든 하실 수 있으시니, 이 잔을 저에게서 거두어 주십시오. 그러나 제가 원하는 것을 하지 마시고 아버지께서 원하시는 것을 하십시오.\"라고 부르짖으며 하느님 아버지의 뜻에 따를 것을 원하셨습니다.",
	@"지극히 고통스러우신 어머니 마리아님, 저희를 위하여 채찍질을 당하신 주님 사랑의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 빌라도가 명령을 내리자 군사들은 예수님의 옷을 벗기고 예수님을 기둥에 묶어 매질하였습니다. 그때 어머니의 거룩한 아드님께서는 머리에서 발끝까지, 온 몸이 잔인하게 찢어지고, 더 이상 견딜 수 없을 지경에 이르도록 살이 채찍에 묻어 떨어져 나왔습니다.",
	@"지극히 고통스러우신 어머니 마리아님, 저희를 위하여 가시관 쓰신 주님 사랑의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 군사들이 주님의 머리 위에 날카로운 가시관을 씌우고 힘을 다해 누르니 가시가 머릿속 깊이 박혔습니다. 또한 그들은 주님 앞에 무릎을 꿇고 \"유다인들의 임금님, 만세!\"하며 주님을 조롱하였습니다.",
	@"지극히 고통스러우신 어머니 마리아님, 저희를 위하여 십자가를 지신 주님 사랑의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 예수님께서는 몸소 십자가를 짖시고 ‘해골 터’라는 곳으로 나가셨는데 무거운 십자 나무가 어깨를 짓눌러 걸음걸이가 흩어지고, 고통의 길은 험했습니다. 예수님께서는 군중들의 야유 속에서도 참고 견디시며 갈바리아 산으로 올라가셨는데, 비틀거리며 걸어가시다가 넘어지실 때마다 군사들의 잔악한 채찍은 고난의 길을 더욱 재촉했습니다.",
	@"지극히 고통스러우신 어머니 마리아님, 저희를 위하여 십자가에 못 박혀 돌아가신 주님 사랑의 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 거룩하신 당신의 아들 예수님께서는 십자가에 못 박혀 세 시간 동안이나 말할 수 없는 극도의 고통에 시달리셨으나 당신을 적대하는 그들을 용서해 달라고 하느님 아버지께 간청하셨습니다. 그리고 당신의 영을 아버지 손에 온전히 맡기시며 숨을 거두셨습니다.",
	@"지극히 영예로우신 어머니 마리아님, 주님께서 부활하신 영광스러운 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 돌아가시고 묻히신 지 사흘째 되는 날 아침, 주님께서는 부활하시어 사랑하올 어머니께 나타나심으로써 형언할 수 없는 기쁨으로 어머니의 마음을 채워드렸습니다. 또한 여인들과 제자들에게 나타나셔서 온 누리가 부활하신 주 하느님을 찬미하도록 하셨습니다.",
	@"지극히 영예로우신 어머니 마리아님, 주님께서 승천하신 영광스러운 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 예수님께서는 부활하신 후 사십일 동안 지상에 머무르시다가, 때가 되자 어머니와 제자들에게 둘러싸여 올리브 산으로 올라가 그곳에서 승천하시기 전 최후의 흠숭과 찬미를 받으셨습니다. 그때 예수님께서는 세상 끝날까지 항상 함께 계시겠다고 약속하시며, 못으로 뚫린 손을 그들 위에 펴시면서 마지막 강복을 주시고는 어머니와 제자들이 보는 앞에서 하늘로 올라가셨습니다.",
	@"지극히 영예로우신 어머니 마리아님, 성령 강림의 영광스러운 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 제자들이 어머니와 함께 예루살렘 다락방에 모여 있을 때, 성령의 불꽃이 혀의 모양으로 내려와 제자들의 마음을 거룩한 사랑으로 불타게 하시고, 그들에게 모든 진리를 깨우쳐 주시며 말씀의 은혜를 내려 주셨습니다. 그리고 풍성한 은총으로 성령에 이끌린 어머니의 기도와 사도들을 통하여 인류 구원을 위한 교회 활동을 시작하셨습니다.",
	@"지극히 영예로우신 어머니 마리아님, 주님께서 어머니를 하늘에 불러 올리신 영광스러운 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 예수님께서는 어머니를 향한 지극한 사랑에서, 하늘에 계신 아드님과 일치할 소망에 불타는 어머니의 거룩한 영혼과 당신의 첫 감실이셨던 어머니의 순결하신 육신을, 천사들과 성인들의 환호 가운데 하늘로 불러 올리셨습니다.",
	@"지극히 영예로우신 어머니 마리아님, 주님께서 어머니께 천상 모후의 관을 씌우신 영광스러운 신비를 묵상하며 정성을 다해 이 기도를 바칩니다. 천상으로 불러 올림을 받으신 어머니께서는 하느님의 사랑받는 딸, 성자의 존귀한 어머니, 성령의 선택된 짝으로서 하늘의 존엄한 삼관 여왕이 되셨습니다. 당신은 성삼위 하느님을 흠없이 찬미하신 복되신 어머니로서 저희의 간청을 전해 주실 가장 힘 있고 자비하신 분이시니, 어머니, 이 모든 기도를 하느님께 전구해 주소서."};

static NSString*		mysteryText2[4][5] = { 
	@"저는 눈같이 흰 장미 송이로 엮어 만든 이 꽃다발을 하느님 대전에서 겸손한 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 눈같이 흰 장미 송이로 엮어 만든 이 꽃다발을 하느님과 이웃을 사랑하는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 눈같이 흰 장미 송이로 엮어 만든 이 꽃다발을 마음이 가난한 삶의 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 눈같이 흰 장미 송이로 엮어 만든 이 꽃다발을 정결한 마음가짐의 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 눈같이 흰 장미 송이로 엮어 만든 이 꽃다발을 하느님의 뜻에 순명하는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 황금같이 빛나는 장미 송이로 엮어 만든 이 꽃다발을 하느님의 자녀로서 기쁘고 충실하게 살아갈 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 황금같이 빛나는 장미 송이로 엮어 만든 이 꽃다발을 예수님의 말씀에 따르는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 황금같이 빛나는 장미 송이로 엮어 만든 이 꽃다발을 이웃에게 하느님 나라를 전하는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 황금같이 빛나는 장미 송이로 엮어 만든 이 꽃다발을 영원한 생명을 위해 인내하는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 황금같이 빛나는 장미 송이로 엮어 만든 이 꽃다발을 성체께 흠숭과 감사를 드리는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 피같이 붉은 장미 송이로 엮어 만든 이 꽃다발을 하느님을 온전히 신뢰하는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 피같이 붉은 장미 송이로 엮어 만든 이 꽃다발을 하느님 나라를 위해 극기하는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 피같이 붉은 장미 송이로 엮어 만든 이 꽃다발을 양선하신 예수님을 닮을 수 있는 온유의 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 피같이 붉은 장미 송이로 엮어 만든 이 꽃다발을 역경을 이겨내는 용덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 만발한 장미 송이로 엮어 만든 이 꽃다발을 굳은 믿음의 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 만발한 장미 송이로 엮어 만든 이 꽃다발을 영원한 생명을 갈망하는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 만발한 장미 송이로 엮어 만든 이 꽃다발을 하느님의 말씀을 전하는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 만발한 장미 송이로 엮어 만든 이 꽃다발을 어머니와 함께 예수님과 일치하는 덕을 구하며 어머니 발아래 겸손히 바칩니다.",
	@"저는 만발한 장미 송이로 엮어 만든 이 꽃다발을 성교회의 평화를 위해 기도하는 덕을 구하며 어머니 발아래 겸손히 바칩니다."};


+ (NSString*)getMysteryTitleForMystery:(NSInteger)mystery withIndex:(NSInteger)index
{
	return mysteryTitle[mystery-1][index-1];
}

+ (NSString*)getMysteryText1ForMystery:(NSInteger)mystery withIndex:(NSInteger)index
{
	return mysteryText1[mystery-1][index-1];
}

+ (NSString*)getMysteryText2ForMystery:(NSInteger)mystery withIndex:(NSInteger)index
{
	return mysteryText2[mystery-1][index-1];
}

@end

@implementation CustomTextView

- (BOOL)canBecomeFirstResponder {
    return NO;
}

@end
